package com.wondertek.service.service.sys;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wondertek.service.dto.sys.req.*;
import com.wondertek.service.dto.sys.res.SysUserRes;
import com.wondertek.service.entity.sys.SysUserPo;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

/**
 * @author xqs
 */
public interface ISysUserService extends IService<SysUserPo> {

    /*
    * 邮箱获取验证码
    * */
    long checkEmail(String email);

    /*
    * 忘记密码-修改密码
    * */
    void forgetAndRestPassword(SysUserForgetReq passwordReq);

    /**
     * 分页查询用户
     * @param sysUserQueryReq /
     * @return /
     */
    Page<SysUserRes> page(SysUserQueryReq sysUserQueryReq);

    /**
     * 用户导出
     * @param sysUserQueryReq
     */
    void export(SysUserQueryReq sysUserQueryReq, HttpServletResponse response);

    /**
     * 新增用户
     * @param sysUserAddReq /
     */
    void add(SysUserAddReq sysUserAddReq);

    /**
     * 修改用户
     * @param sysUserUpdateReq /
     */
    void update(SysUserUpdateReq sysUserUpdateReq);

    /**
     * 禁用用户
     * @param userId /
     */
    void disable(String userId);

    /**
     * 启用用户
     * @param userId /
     */
    void enable(String userId);


    /**
     * 根据组织ID查询用户
     * @param departIds /
     * @return /
     */
    List<SysUserRes> findUserByParam(List<String> departIds, List<String> roleCodes, List<Integer> departTypes, String userId);

    /**
     * 修改密码
     * @param sysUserUpdatePasswordReq /
     */
    void updatePassword(SysUserUpdatePasswordReq sysUserUpdatePasswordReq);

    /**
     * 重置密码
     * @param restPasswordReq /
     */
    void restPassword(SysUserRestPasswordReq restPasswordReq);

    /**
     * 删除用户
     *
     * @param id
     */
    void delete(String id);
}
